package com.jmar.ctrl;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.alibaba.fastjson.JSONObject;
import com.jmar.bean.User;
import com.jmar.service.UserServiceI;

@Controller
@RequestMapping("/")
public class DefaultCtrl {

	private Logger log = Logger.getLogger(DefaultCtrl.class);

	@Autowired
	private UserServiceI userService;

	/**
	 * 新增用户
	 * 
	 * @param name
	 * @param pwd
	 * @return
	 */
	@RequestMapping("/test")
	public ModelAndView websocket() {
		ModelAndView mv = new ModelAndView("/websocket/test1");
		System.out.println("1112");
		return mv;
	}

	/**
	 * 新增用户
	 * 
	 * @param name
	 * @param pwd
	 * @return
	 */
	@RequestMapping("/add")
	@ResponseBody
	public JSONObject addUser(String name, String pwd) {
		JSONObject json = new JSONObject();
		try {
			User u = new User();
			u.setName(name);
			u.setPwd(pwd);
			int uid = userService.insertUser(u);
			json.put("uid", uid);
			json.put("success", true);
			json.put("msg", "用户新增成功!");
			json.put("user", JSONObject.toJSONString(u));
			return json;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			e.printStackTrace();
			json.put("msg", "服务器异常!");
			json.put("success", false);
			json.put("code", "E001");
			return json;
		}
	}

	/**
	 * 新增用户
	 * 
	 * @param name
	 * @param pwd
	 * @return
	 */
	@RequestMapping("/info/{userId}")
	@ResponseBody
	public JSONObject infoUser(@PathVariable String userId) {
		JSONObject json = new JSONObject();
		try {
			int id = 0;
			try {
				id = Integer.valueOf(userId);
			} catch (Exception e) {
				id = 0;
			}
			User user = userService.info(id);
			json.put("success", true);
			json.put("msg", "用户查询成功");
			json.put("user", JSONObject.toJSONString(user));
			return json;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			e.printStackTrace();
			json.put("msg", "服务器异常!");
			json.put("success", false);
			json.put("code", "E001");
			return json;
		}
	}

	/**
	 * 删除用户
	 * 
	 * @param name
	 * @param pwd
	 * @return
	 */
	@RequestMapping("/del/{userId}")
	@ResponseBody
	public JSONObject delUser(@PathVariable String userId) {
		JSONObject json = new JSONObject();
		try {
			int id = 0;
			try {
				id = Integer.valueOf(userId);
			} catch (Exception e) {
				id = 0;
			}
			userService.del(id);
			json.put("success", true);
			json.put("msg", "用户删除成功");
			return json;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			e.printStackTrace();
			json.put("msg", "服务器异常!");
			json.put("success", false);
			json.put("code", "E001");
			return json;
		}
	}

	/**
	 * 所以用户
	 * 
	 * @param name
	 * @param pwd
	 * @return
	 */
	@RequestMapping("/all")
	@ResponseBody
	public JSONObject allUsers() {
		JSONObject json = new JSONObject();
		try {
			List<User> users = userService.all();
			json.put("success", true);
			json.put("size", users.size());
			json.put("msg", "用户查询成功");
			json.put("user", JSONObject.toJSONString(users));
			return json;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			e.printStackTrace();
			json.put("msg", "服务器异常!");
			json.put("success", false);
			json.put("code", "E001");
			return json;
		}
	}

	/**
	 * 删除用户
	 * 
	 * @param name
	 * @param pwd
	 * @return
	 */
	@RequestMapping("/update")
	@ResponseBody
	public JSONObject updateUser(User user) {
		JSONObject json = new JSONObject();
		try {
			String s = user.getName();
			s = new String(s.getBytes("iso-8859-1"), "utf-8");
			user.setName(s);
			userService.update(user);
			json.put("success", true);
			json.put("msg", "用户更新成功");
			return json;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			e.printStackTrace();
			json.put("msg", "服务器异常!");
			json.put("success", false);
			json.put("code", "E001");
			return json;
		}
	}
}
